package pipe

import "fmt"

type AppletOrderInfo struct {
	Id          string `gorm:"column:order_info_id"`
	OrderNumber string `gorm:"column:order_number"`
}

func (this *AppletOrderInfo) String() string {
	return fmt.Sprintf("order_info_id:%s,order_number:%s\n", this.Id, this.OrderNumber)
}

type AppletOrderInfoList struct {
	Data []*AppletOrderInfo
	Page int
}
type Result struct {
	Page int
	Err  error
}

//type InChan chan *BookList
//type OutChan chan *Result
//
//type DataCmd func() InChan
//type DataPipeCmd  func(in InChan) OutChan
//
//func Pipe(c1 DataCmd,cs ...DataPipeCmd) OutChan{
//	in:=c1()
//	out:=make(OutChan)
//	wg:=sync.WaitGroup{}
//	for _,c:=range cs{
//		getChan:=c(in)
//		wg.Add(1)
//		go func(input OutChan) {
//			defer wg.Done()
//			for v:=range input{
//				out<-v
//			}
//		}(getChan)
//	}
//	go func() {
//		defer close(out)
//		wg.Wait()
//	}()
//	return out
//
//}
//
//const sql="select * from books order by book_id limit ? offset ? "
//func ReadData() InChan  {
//	 page:=1;
//	 pagesize:=1000
//	 in:=make(InChan)
//	 go func() {
//	 	defer close(in)
//		 for {
//			 booklist := &BookList{make([]*Book, 0), page}
//			 db := AppInit.GetDB().Raw(sql, pagesize, (page-1)*pagesize).Find(&booklist.Data)
//			 if db.Error != nil || db.RowsAffected == 0 {
//				 break
//			 }
//			 in<-booklist
//			 page++
//
//		 }
//	 }()
//	 return in
//
//
//}
//
////管道函数
//func WriteData(in InChan) OutChan  {
//		out:=make(OutChan)
//		go func() {
//			defer close(out)
//			for d:=range in {
//				out<-&Result{Page:d.Page,Err:SaveData(d)}
//			}
//		}()
//		return out
//}
//
//
////写入到csv文件
//func SaveData(data *BookList) error   {
//	time.Sleep(time.Millisecond*500)
//	file:=fmt.Sprintf("./src/pipeline/csv/%d.csv",data.Page)
//	csvFile,err:= os.OpenFile(file,os.O_RDWR|os.O_CREATE|os.O_TRUNC,0666)
//	if err!=nil{
//		return err
//	}
//	defer csvFile.Close()
//	w := csv.NewWriter(csvFile)//创建一个新的写入文件流
//	header := []string{"book_id", "book_name"}
//	export := [][]string{
//		header,
//	}
//	for _,d:=range data.Data{
//		cnt:=[]string{
//			strconv.Itoa(d.BookId),
//			d.BookName,
//		}
//		export=append(export,cnt)
//	}
//	err=w.WriteAll(export)
//	if err!=nil{
//		return err
//	}
//	w.Flush()
//	return nil
//}
//
//func Test()  {
//	 out:=Pipe(ReadData,WriteData,WriteData,WriteData,WriteData,WriteData)
//	 for o:=range out{
//	 	fmt.Printf("%d.csv文件执行完成,结果:%v\n",o.Page,o.Err)
//	 }
//}
